/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jcpcotizaciones.Control;

/**
 *
 * @author FAMILIA MANOTAS
 */
import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import jcpcotizaciones.Modelo.Usuario;

public class ControlUsuario {
    private static List usuario;
    private static Connection con;

    public static void agregarUsuario (Usuario u) throws SQLException, Exception{
        ManejadorBaseDatos mbd= ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con=mbd.getConexion();
        if (con == null ){
          throw new SQLException(" No hay conexion ");
        }

        PreparedStatement pst = null;
        try {
          pst = con.prepareStatement("Insert Into usuario values(?,?,?,?,?,?)");
          pst.setString(1,u.getCodigo());
          pst.setString(2,u.getCedula());
          pst.setString(3,u.getNombre());
          pst.setString(4,u.getCargo());
          pst.setString(5,u.getClave());
          pst.setString(6,u.getEmail());
          pst.executeUpdate();
        }finally {
            if (pst != null) {
                 pst.close();
            }
        }
    }

public static Usuario BuscarUsuario(String cod) throws SQLException{
         if (cod == null) {
          throw new SQLException("No hay elemento clave de la clase usuario");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usu = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from usuario where codusuario = ?");
         pst.setString(1, cod.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             usu = Usuario.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usu;
    }
    }
public static Usuario BuscarUsuarioCed(String ced) throws SQLException{
         if (ced == null) {
          throw new SQLException("No hay elemento clave de la clase usuario");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usu = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from usuario where cedula = ?");
         pst.setString(1, ced.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             usu = Usuario.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usu;
    }
    }

public static Usuario iniciarSesion (String nom, String cla){
    Usuario us= null;
    ResultSet rs = null;
    PreparedStatement pst = null;
    if(nom.trim().equals("") || cla.trim().equals("")){
        JOptionPane.showMessageDialog(null,"Por favor llene todos los campos");
    } else{
            try {
                 ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
                pst = con.prepareStatement("select * from usuario where nombre = ? and clave=?");
                pst.setString(1, nom.trim());
                pst.setString(2, cla.trim());
                rs = pst.executeQuery();
                while (rs.next()) {
                    us = Usuario.load(rs);
                }
            } catch (Exception ex) {
                Logger.getLogger(ControlUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

    return us;
}
public static Usuario BuscarUsuarioNom(String nom) throws SQLException{
         if (nom == null) {
          throw new SQLException("No hay elemento clave de la clase usuario");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Usuario usu = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from usuario where nombre = ?");
         pst.setString(1, nom.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             usu = Usuario.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return usu;
    }
    }

public static boolean ModificarUsuario(Usuario u,String cod) throws SQLException, Exception{
      if ( BuscarUsuario(cod) == null) {
          throw new SQLException ("Usuario no registrado ");
      }
       PreparedStatement pst = null;
       boolean res=false;
       try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("Update usuario set codusuario = ?, cedula = ?, nombre = ?, cargo = ?, clave = ?,  email = ? where codusuario= ?" );
            pst.setString(1,u.getCodigo());
            pst.setString(2,u.getCedula());
            pst.setString(3,u.getNombre());
            pst.setString(4,u.getCargo());
            pst.setString(5,u.getClave());
            pst.setString(6,u.getEmail());
            pst.setString(7,cod);
         int r= pst.executeUpdate();
         if (r != 0) {
          res = true;
       }
       } finally {
          if (pst != null) {
            pst.close();
          }
       }
       return res;
     }

 public static void EliminarUsuario(String cod) throws SQLException, Exception{
         if (BuscarUsuario(cod) == null) {
        throw new SQLException("No hay elemento clave de la clase tablausuario");
     }
     PreparedStatement pst = null;

     try {
        ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con=mbd.getConexion();
        pst = con.prepareStatement("delete from usuario where codusuario = ?");
        pst.setString(1, cod.trim());
        pst.executeUpdate();

     } finally {
        if (pst != null) {
           pst.close();
        }
     }

     }

public static void listarUsuario() throws SQLException, Exception {
     ResultSet rs = null;
     PreparedStatement pst = null;
     usuario = new LinkedList();
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
        pst = con.prepareStatement("select * from usuario ");
        rs = pst.executeQuery();
        while(rs.next()) {
           usuario.add(Usuario.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
}
}

public static List getUsuario(){
    return usuario;
}

public static void setUsuario (List aUsuario){
    usuario = aUsuario;
}
}